package br.gov.mi.corporativo.dominio.boundary.comum.pessoafisica;

import java.util.Date;
import java.util.List;

import javax.inject.Inject;
import javax.jws.WebService;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import br.gov.mi.corporativo.dominio.entidade.comum.PessoaFisica;
import br.gov.mi.corporativo.dominio.repositorio.comum.PessoaFisicaRepositorio;
import br.gov.mi.infraestrutura.crud.CrudServicoImpl;


@Component
@Transactional(readOnly=true)
@WebService(endpointInterface = "br.gov.mi.corporativo.dominio.boundary.comum.pessoafisica.PessoaFisicaEndPoint")
public class PessoaFisicaServico extends CrudServicoImpl<PessoaFisica, Long, PessoaFisicaRepositorio>  implements PessoaFisicaEndPoint{

	@Inject
    public void setRepository(PessoaFisicaRepositorio repositorio) {
        super.setRepositorio(repositorio);
    }

	@Override
	public PessoaFisica recuperarPorIdPessoaFisica(Long idPessoaFisica) {
		return repositorio.idPessoaFisica(idPessoaFisica);
	}

	@Override
	public List<PessoaFisica> recuperarPorUf(Long uf) {
		return repositorio.findByUf(uf);
	}

	@Override
	public List<PessoaFisica> recuperarPorPais(Long pais) {
		return repositorio.findByPais(pais);
	}

	@Override
	public List<PessoaFisica> recuperarPorTratamento(Long tratamento) {
		return repositorio.findByTratamento(tratamento);
	}

	@Override
	public List<PessoaFisica> recuperarPorPessoa(Long pessoa) {
		return repositorio.findByPessoa(pessoa);
	}

	@Override
	public List<PessoaFisica> recuperarPorProfissao(Long profissao) {
		return repositorio.findByProfissao(profissao);
	}

	@Override
	public List<PessoaFisica> recuperarPorMunicipio(Long municipio) {
		return repositorio.findByMunicipio(municipio);
	}

	@Override
	public List<PessoaFisica> recuperarPorNmPessoaFisica(String nmPessoaFisica) {
		return repositorio.findByNmPessoaFisicaContainingIgnoreCaseOrderByNmPessoaFisicaAsc(nmPessoaFisica);
	}

	@Override
	public List<PessoaFisica> recuperarPorDtNascimento(Date dtNascimento) {
		return repositorio.findByDtNascimento(dtNascimento);
	}

	@Override
	public List<PessoaFisica> recuperarPorStSexo(String stSexo) {
		return repositorio.findByStSexo(stSexo);
	}

	@Override
	public List<PessoaFisica> recuperarPorCsGrupoSanguineo(String csGrupoSanguineo) {
		return repositorio.findByCsGrupoSanguineo(csGrupoSanguineo);
	}

	@Override
	public List<PessoaFisica> recuperarPorCsFatorRh(String csFatorRh) {
		return repositorio.findByCsFatorRh(csFatorRh);
	}

	@Override
	public List<PessoaFisica> recuperarPorCsCor(String csCor) {
		return repositorio.findByCsCor(csCor);
	}

	@Override
	public List<PessoaFisica> recuperarPorCsEstadoCivil(String csEstadoCivil) {
		return repositorio.findByCsEstadoCivil(csEstadoCivil);
	}

	@Override
	public List<PessoaFisica> recuperarPorNmPai(String nmPai) {
		return repositorio.findByNmPai(nmPai);
	}

	@Override
	public List<PessoaFisica> recuperarPorNmMae(String nmMae) {
		return repositorio.findByNmMae(nmMae);
	}

	@Override
	public PessoaFisica recuperarPorLogin(String login) {
		return repositorio.findPorLogin(login);
	}
	
}
